package com.macro.mall.portal.service;

import com.macro.mall.common.api.CommonPage;
import com.macro.mall.common.api.CommonResult;
import com.macro.mall.portal.dto.DistributionOrderDto;
import org.springframework.web.bind.annotation.RequestParam;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;


/**
 * 分销订单管理
 * @author zhouboyu
 * @Date 2020年9月1日
 */
public interface OmsDistributionOrderService {
    /**
     * 创建分销订单
     * @param orderId
     * @return
     */
    int insertByOrderId(Long orderId);

    /**
     * 分销订单分页查询
     *
     * @author zhouboyu
     * @Date  2020年9月15日
     * @param pageNum
     * @param pageSize
     * @return
     */
    Map<String, Object> getList(Integer pageNum, Integer pageSize, Date start, Date end);

    /**
     * 佣金合计
     * @param start
     * @param end
     * @return
     */
    BigDecimal getAllCommission(Date start, Date end);

    /**
     * 获取一段时间内的业绩总额
     * @author zhouboyu
     * @Date  2020年9月15日
     * @param agentId
     * @param start
     * @param end
     * @return
     */
    BigDecimal getTotalAmount(Long agentId, Date start, Date end);

    /**
     * 获取经纪人当前的体现金额情况
     * @author zhouboyu
     * @Date 2020年9月15日
     * @return
     */
    Map<String, BigDecimal> getWithdrawalAmount();

    /**
     * 获取当前经纪人可提现总金额
     * @Date 2020年9月15日
     * @author zhouboyu
     * @param agentId
     * @return
     */
    BigDecimal getTotalCommission(Long agentId);

    /**
     * 获取当前经纪人已经提现总金额
     * @author zhouboyu
     * @Date 2020年9月15日
     * @param agentId
     * @return
     */
    BigDecimal getHasWithdrawalCommission(Long agentId,Date start,Date end);

    /**
     * 提现记录
     * @author zhouboyu
     * @Date 2020年9月16日
     * @param pageNum
     * @param pageSize
     * @param start
     * @param end
     * @return
     */
    Map<String, Object> withdrawalRecord(Integer pageNum, Integer pageSize, Date start);

    /**
     * 经纪人申请提现，创建提现订单
     * @author zhouboyu
     * @Date 2020年9月16日
     * @param amount
     * @return
     */
    CommonResult withdrawalApply(BigDecimal amount);
}
